// 初始化云开发环境
wx.cloud.init({
    env: 'your_cloud_env_id',
    traceUser: true
})
const App = getApp();

Page({
    onShareAppMessage() {
        return {
            title: '精选简历模板 - 专业简历制作工具',
            path: 'pages/inspiration/inspiration',
            imageUrl: "https://qzruocheng.oss-cn-beijing.aliyuncs.com/resume_assets/assets/icons/logo.png"
        }
    },
    data: {
        // 搜索相关
        searchKeyword: '',
        showFilters: false,
        hideTab: false, // 为满足上架需求,因此资讯类tab
        // 筛选相关
        contentTypes: [
            { id: 1, name: '简历案例' },
            { id: 2, name: '求职信' },
            { id: 3, name: '作品集' }
        ],
        activeContentType: 1,

        industries: [
            { id: 1, name: '互联网' },
            { id: 2, name: '金融' },
            { id: 3, name: '教育' },
            { id: 4, name: '医疗' },
            { id: 5, name: '设计' },
            { id: 6, name: '市场营销' }
        ],
        activeIndustry: 1,

        // 导航标签
        tabs: [
            { id: 0, name: '案例' },
            { id: 1, name: '技巧' },
            // { id: 2, name: '趋势' }
        ],
        activeTab: 0,

        // 案例列表
        caseList: [],
        hasMoreCases: true,
        casePage: 1,

        // 技巧列表
        tipsList: [],
        hasMoreTips: true,
        tipPage: 1,

        // 趋势列表
        trendsList: [],
        hasMoreTrends: true,
        trendPage: 1,

        // 加载状态
        isLoading: true,

        // 案例预览
        showPreview: false,
        currentCase: null,

        // 技巧详情
        showTipDetail: false,
        currentTip: null,
        capsuleTop: "", //胶囊距离屏幕顶部的距离
        capsuleHeight: "", //胶囊高度
        navbarHeight: ""//导航栏高度
    },

    onLoad() {
        const now = new Date();
        const deadline = new Date('2025-08-05');
        if (now > deadline) {
            this.setData({
                hideTab: true
            })
        }
        this.setData({
            isLoading: true,
            capsuleTop: App.globalData.capsule.top,
            capsuleHeight: App.globalData.capsule.height,
            navbarHeight: (App.globalData.capsule.top - App.globalData.system.statusBarHeight) * 2 + App.globalData.capsule.height + App.globalData.system.statusBarHeight,
        }, () => {
            this.loadInitialData()
        })
    },

    // 加载初始数据
    async loadInitialData() {
        wx.showLoading({
            title: '加载中...'
        });
        try {
            await Promise.all([
                this.getCaseList(),
                this.getTipsList(),
                this.getTrendsList()
            ])
        } catch (err) {
            console.error('加载数据失败:', err)
            wx.showToast({
                title: '加载失败',
                icon: 'none'
            });
        } finally {
            wx.hideLoading();
            this.setData({ isLoading: false })
        }
    },

    // 处理搜索输入
    handleSetKeyword(e) {
        console.log('输入框内容: ', e.detail.value);

        this.setData({
            searchKeyword: e.detail.value.trim()
        });
    },

    // 处理搜索框失焦
    handleSearchBlur() {
        if (this.data.searchKeyword.trim()) {
            this.handleSearchInput(this.data.searchKeyword)
        }
    },
    handleSearchInput(keyword) {
        wx.showLoading({
            title: '搜索中...',
            mask: true
        });

        wx.cloud.callFunction({
            name: 'SearchAllBaseTemplate',
            data: {
                searchText: keyword
            },
            success: res => {
                wx.hideLoading();
                console.log('搜索成功', res.result);
                this.setData({
                    activeTab: 0,
                    searchKeyword: '',
                    caseList: (res.result.data || []).filter(item => item.enable !== false)
                });
                wx.showToast({
                    title: '搜索完成',
                    icon: 'success',
                    duration: 1500
                });
            },
            fail: err => {
                wx.hideLoading();
                console.error('搜索失败', err);
                wx.showToast({
                    title: '搜索失败',
                    icon: 'none'
                });
            }
        });
    },
    // 清除搜索
    clearSearch() {
        this.setData({
            searchKeyword: '',
            caseList: [],
            casePage: 1,
            hasMoreCases: true
        })
        this.getCaseList()
    },

    // 显示筛选选项
    showFilterOptions() {
        this.setData({
            showFilters: !this.data.showFilters
        })
    },

    // 选择内容类型
    selectType(e) {
        const typeId = e.currentTarget.dataset.id
        this.setData({
            activeContentType: typeId
        })
    },

    // 选择行业
    selectIndustry(e) {
        const industryId = e.currentTarget.dataset.id
        this.setData({
            activeIndustry: industryId
        })
    },

    // 重置筛选
    resetFilters() {
        this.setData({
            activeContentType: 1,
            activeIndustry: 1
        })
    },

    // 应用筛选
    applyFilters() {
        this.setData({
            showFilters: false,
            caseList: [],
            casePage: 1,
            hasMoreCases: true
        })
        this.getCaseList()
    },

    // 切换标签
    switchTab(e) {
        const tabId = e.currentTarget.dataset.id
        this.setData({
            activeTab: tabId
        })
    },

    // 处理swiper切换
    handleSwiperChange(e) {
        this.setData({
            activeTab: e.detail.current
        })
    },

    // 获取案例列表
    async getCaseList() {
        return new Promise(async (resolve, reject) => {
            if (!this.data.hasMoreCases) return resolve()

            try {
                wx.showLoading({
                    title: '加载案例中...',
                    mask: true
                });

                // 调用云函数获取数据
                const res = await wx.cloud.callFunction({
                    name: 'getResumeCases',
                    data: {
                        page: this.data.casePage,
                        pageSize: 10,
                        searchKeyword: this.data.searchKeyword,
                        contentType: this.data.activeContentType,
                        industryId: this.data.activeIndustry
                    }
                })

                if (res.result.code === 0) {
                    this.setData({
                        caseList: this.data.caseList.concat(res.result.data.list).filter(item => item.enable !== false),
                        casePage: this.data.casePage + 1,
                        hasMoreCases: res.result.data.hasMore
                    })
                    wx.hideLoading();
                    resolve()
                } else {
                    console.error('获取案例失败:', res.result.message)
                    wx.hideLoading();
                    wx.showToast({
                        title: '加载案例失败',
                        icon: 'none'
                    });
                    reject(res.result.message)
                }
            } catch (err) {
                console.error('调用云函数失败:', err)
                wx.hideLoading();
                wx.showToast({
                    title: '加载案例失败',
                    icon: 'none'
                });
                reject(err)
            }
        })
    },

    // 获取技巧列表
    async getTipsList() {
        return new Promise(async (resolve, reject) => {
            if (!this.data.hasMoreTips) return resolve()

            try {
                wx.showLoading({
                    title: '加载技巧中...',
                    mask: true
                });

                // 调用云函数获取数据
                const res = await wx.cloud.callFunction({
                    name: 'getSkillsList'
                })

                if (res.result.code === 0) {
                    this.setData({
                        tipsList: (res.result.data.skills).filter(item => item.enable !== false),
                        hasMoreTips: false // 一次性获取所有数据
                    })
                    wx.hideLoading();
                    resolve()
                } else {
                    console.error('获取技巧失败:', res.result.message)
                    wx.hideLoading();
                    wx.showToast({
                        title: '加载技巧失败',
                        icon: 'none'
                    });
                    reject(res.result.message)
                }
            } catch (err) {
                console.error('调用云函数失败:', err)
                wx.hideLoading();
                wx.showToast({
                    title: '加载技巧失败',
                    icon: 'none'
                });
                reject(err)
            }
        })
    },

    // 获取趋势列表
    async getTrendsList() {
        if (!this.data.hasMoreTrends) return

        wx.showLoading({
            title: '加载趋势中...',
            mask: true
        });
        this.setData({ isLoading: true })
        try {
            // 模拟从云数据库获取数据
            const mockData = this.generateMockTrends(this.data.trendPage)
            console.log(" 获取趋势列表", mockData);

            this.setData({
                trendsList: this.data.trendsList.concat(mockData),
                trendPage: this.data.trendPage + 1,
                hasMoreTrends: mockData.length >= 10,
                isLoading: false
            })
            wx.hideLoading();
        } catch (err) {
            console.error('获取趋势失败', err)
            wx.hideLoading();
            wx.showToast({
                title: '加载趋势失败',
                icon: 'none'
            });
            this.setData({ isLoading: false })
        }
        console.log(" 获取趋势列表", this.data.trendsList);
    },

    // 加载更多案例
    loadMoreCases() {
        this.getCaseList()
    },

    // 加载更多技巧
    loadMoreTips() {
        this.getTipsList()
    },

    // 加载更多趋势
    loadMoreTrends() {
        this.getTrendsList()
    },

    // 预览案例 - 跳转到案例详情页
    previewCase(e) {
        const caseItemId = e.currentTarget.dataset.id
        // 从 tipsList 中查找 _id 为caseItemId 的对象 
        const caseItem = this.data.caseList.find(item => item._id === caseItemId)
        wx.navigateTo({
            url: '/pages/case-detail/case-detail?item=' + encodeURIComponent(JSON.stringify(caseItem))
        })
    },

    // 收藏案例
    saveCase() {
        wx.showToast({
            title: '案例已收藏',
            icon: 'success'
        })
        this.closeCasePreview()
    },

    // 查看技巧详情 - 跳转到技巧详情页
    viewTipDetail(e) {
        const tipItemId = e.currentTarget.dataset.id
        console.log('技巧', tipItemId);
        // 从 tipsList 中查找 _id 为caseItemId 的对象 
        const tipItem = this.data.tipsList.find(item => item._id === tipItemId)
        wx.navigateTo({
            url: '/pages/tip-detail/tip-detail?item=' + encodeURIComponent(JSON.stringify(tipItem))
        })
    },

    // 阻止事件冒泡
    stopPropagation(e) {
        // 空方法，仅用于阻止事件冒泡
    },

    // 查看趋势详情
    viewTrendDetail(e) {
        const trendId = e.currentTarget.dataset.id
        wx.navigateTo({
            url: `/pages/trend-detail/trend-detail?id=${trendId}`
        })
    },

    // 生成模拟案例数据
    generateMockCases(page = 1) {
        const industries = ['互联网', '金融', '教育', '医疗', '设计', '市场营销']
        const titles = [
            '高级产品经理简历模板',
            'UI设计师求职作品集',
            '全栈开发工程师简历',
            '数据分析师求职简历',
            '市场营销总监简历模板'
        ]

        return Array.from({ length: 10 }).map((_, index) => ({
            id: (page - 1) * 10 + index + 1,
            title: titles[index % titles.length],
            industryId: (index % industries.length) + 1,
            desc: '这是一份优秀的简历案例，展示了如何有效地呈现工作经历和项目成果',
            thumbnail: `https://image.baidu.com/search/detail?adpicid=0&b_applid=7639090378580584688&bdtype=0&commodity=&copyright=&cs=2072646607%2C527597556&di=7500620934571622401&fr=click-pic&fromurl=http%253A%252F%252Fwww.isenlin.cn%252Fsf_723DB470192946CA9BB6AAA206A35CBC_209_66E3D680754.html&gsm=1e&hd=&height=0&hot=&ic=&ie=utf-8&imgformat=&imgratio=&imgspn=0&is=0%2C0&isImgSet=&latest=&lid=97003c8100019cfc&lm=&objurl=https%253A%252F%252Fpic1.arkoo.com%252F56D0B40F99F841DF8A2425762AE2565D%252Fpicture%252Fo_1i4qop009177v1tgf14db15he1iaj1is.jpg&os=2854869602%2C1461070246&pd=image_content&pi=0&pn=1&rn=1&simid=2072646607%2C527597556&tn=baiduimagedetail&width=0&word=%E5%9B%BE%E7%89%87&z=`,
            views: Math.floor(Math.random() * 1000),
            likes: Math.floor(Math.random() * 500)
        }))
    },

    // 生成模拟技巧数据
    generateMockTips(page = 1) {
        const tags = ['简历撰写', '面试技巧', '职业规划', '薪资谈判']
        const titles = [
            '如何撰写吸引HR注意的简历',
            '面试中常见的10个问题及回答技巧',
            '职业转型的5个关键步骤',
            '如何合理评估自己的市场价值'
        ]

        return Array.from({ length: 10 }).map((_, index) => ({
            id: (page - 1) * 10 + index + 1,
            tag: tags[index % tags.length],
            date: '2023-' + (Math.floor(Math.random() * 12) + 1) + '-' + (Math.floor(Math.random() * 28) + 1),
            title: titles[index % titles.length],
            summary: '这是一篇关于求职技巧的实用指南，包含了大量可立即应用的实用建议',
            views: Math.floor(Math.random() * 1000),
            likes: Math.floor(Math.random() * 500)
        }))
    },

    // 生成模拟趋势数据
    generateMockTrends(page = 1) {
        const industries = ['互联网', '金融科技', '在线教育', '医疗健康', '创意设计']
        const titles = [
            '2023年互联网行业人才需求趋势',
            '金融科技领域热门岗位分析',
            '后疫情时代在线教育行业发展',
            '医疗健康产业人才缺口分析'
        ]

        return Array.from({ length: 10 }).map((_, index) => ({
            id: (page - 1) * 10 + index + 1,
            industry: industries[index % industries.length],
            date: '2023-' + (Math.floor(Math.random() * 12) + 1) + '-' + (Math.floor(Math.random() * 28) + 1),
            title: titles[index % titles.length],
            highlights: [
                '行业整体增长趋势分析',
                '热门岗位及技能要求',
                '薪资水平变化',
                '未来3年发展预测'
            ],
            source: '行业研究报告',
            views: Math.floor(Math.random() * 800),
            likes: Math.floor(Math.random() * 400)
        }))
    },

    // 获取行业名称
    getIndustryName(id) {
        const industry = this.data.caseList.find(item => item.id == id)
        return industry ? industry.tags : '未知行业'
    }
})